//
// Created by zsj on 2019/12/21.
//

#ifndef SCLI_ARG_TRANS_H
#define SCLI_ARG_TRANS_H

#include <iostream>
#include <cstring>
#include <random>
#include "err_ctl.h"
#include "scli_options.h"
#include "args.h"
#include "../al/des_crypto.h"
#include "../al/rsa_crypto.h"
#include "../io/io.h"
#include "../al/dgst.h"

using namespace std;

const string __usage = "用法： scli [选项]...\n"
                       "      使用scli对文件进行加密/解密或签名。\n"
                       "选项：\n"
                       "      -a        必须，指定加解密算法。\n"
                       "                可选：{DES | RSA}。\n"
                       "      -d        解密文件。\n"
                       "                与选项-e不能一起使用。\n"
                       "      -e        加密文件。\n"
                       "                与选项-d不能一起使用。\n"
                       "      -h        列出该帮助信息。\n"
                       "      -i        必须，指定输入文件。\n"
                       "      -k        指定密钥文件。\n"
                       "                在非对称加密算法中有效。\n"
                       "                加密时作为公钥文件，解密时作为私钥文件。\n"
                       "                使用了-s选项签名时无需使用此选项。\n"
                       "      -o        必须，指定输出文件。\n"
                       "      -p        必须，指定加密或签名口令。\n"
                       "      -s        使用数字签名。\n"
                       "\n";

void handle(int, char**);

void usage();

bool __symmetric(const string&);

bool __asymmetric(const string&);

#endif //SCLI_ARG_TRANS_H
